<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>初识Vue</title>
		<!-- 
				监视属性watch：
					1.当被监视的属性变化时, 回调函数自动调用, 进行相关操作
					2.监视的属性必须存在，才能进行监视！！
					3.监视的两种写法：
							(1).new Vue时传入watch配置
							(2).通过vm.$watch监视
		 -->
		 <!-- 
				深度监视：
						(1).Vue中的watch默认不监测对象内部值的改变（一层）。
						(2).配置deep:true可以监测对象内部值改变（多层）。
				备注：
						(1).Vue自身可以监测对象内部值的改变，但Vue提供的watch默认不可以！
						(2).使用watch时根据数据的具体结构，决定是否采用深度监视。
		 -->
		<!-- 引入Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
	</head>
	<body>
		
		<div id="root">
			<!-- 绑定事件的时候：@xxx="yyy" yyy可以写一些简单的语句 -->
          <h2>今天天气很{{info}}</h2>
		  <button @click="changWeather">切换天气</button>
		  <button @click="isHot=!isHot;x++">切换天气</button>
		  <hr>
		  <h2>a{{numbers.a}}</h2>
		  <button @click="add">a++</button>
		</div>

		<script type="text/javascript" >
			Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

			//创建Vue实例
			const vm= new Vue({
				el:'#root',
				data:{
                  isHot:true,
				  x:0,
				  numbers:{
					  a:1,
					  b:1
				  }
				},
				methods: {
					changWeather(){
						this.isHot=!this.isHot
					},
					add(){

					}
				},
				computed: {
					info(){
						return this.isHot? '炎热':'凉爽'
					}

				},
				watch:{
					//监视多级结构中某个属性的变化
					// isHot:{
					// 	//immediate:true,//初始化时调用handler
					// 	handler(newval,oldval){

					// 	}
					// },
					isHot(newval,oldval){
						console.log("11")
					},
					'numbers.a':{

					},
					//监视多级结构中所有属性的变化
					numbers:{
						deep:true, //深度检测
						handler(){

						}
					}
				}
			})
			// vm.$watch('isHot',{
			// 	falg:{
			// 			immediate:true,//初始化时调用handler
			// 			handler(newval,oldval){

			// 				}
			// 		}
			// })
            // vm.$watch('isHot',function(){

			// })
		</script>
	</body>
</html>

